package com.qms.qep.service;

import java.util.List;
import java.util.Map;

/**
 * 数据分析Service接口
 * 
 * @author qms
 */
public interface IDataAnalysisService {

    /**
     * 获取合格率统计数据
     */
    Map<String, Object> getQualificationRate(Integer productId, String productName, Integer batchId, String batchNo, Integer processId, String processName, String startDate, String endDate);

    /**
     * 获取合格率趋势数据
     */
    Map<String, Object> getQualificationTrend(Integer productId, String productName, Integer batchId, String batchNo, Integer processId, String processName, String startDate, String endDate, String timeGranularity);

    /**
     * 获取合格率对比数据
     */
    Map<String, Object> getQualificationCompare(String dimension, List<Integer> dimensionIds, String startDate, String endDate);

    /**
     * 获取缺陷帕累托图数据
     */
    Map<String, Object> getDefectPareto(Integer productId, String productName, Integer batchId, String batchNo, String startDate, String endDate);

    /**
     * 获取缺陷分布图数据
     */
    Map<String, Object> getDefectDistribution(Integer productId, String productName, Integer batchId, String batchNo, String startDate, String endDate);

    /**
     * 获取TOP缺陷分析数据
     */
    Map<String, Object> getDefectTop(Integer productId, String productName, Integer batchId, String batchNo, String startDate, String endDate, Integer limit);

    /**
     * 获取维修率统计数据
     */
    Map<String, Object> getRepairRate(Integer productId, String productName, Integer batchId, String batchNo, String startDate, String endDate);

    /**
     * 获取维修成本分析数据
     */
    Map<String, Object> getRepairCost(Integer productId, String productName, Integer batchId, String batchNo, String startDate, String endDate);

    /**
     * 获取维修效果评估数据
     */
    Map<String, Object> getRepairEvaluation(Integer productId, String productName, Integer batchId, String batchNo, String startDate, String endDate);

    /**
     * 获取过程能力指数(Cp/Cpk)
     */
    Map<String, Object> getProcessCapability(Integer productId, String productName, Integer batchId, String batchNo, Integer paramId, String paramName);

    /**
     * 获取控制图数据
     */
    Map<String, Object> getControlChart(Integer productId, String productName, Integer batchId, String batchNo, Integer paramId, String paramName, String chartType);

    /**
     * 获取趋势分析数据
     */
    Map<String, Object> getSpcTrend(Integer productId, String productName, Integer batchId, String batchNo, Integer paramId, String paramName, String startDate, String endDate);

    /**
     * 获取产品生命周期追溯
     */
    Map<String, Object> getProductTrace(Integer productId);

    /**
     * 根据产品名称获取产品生命周期追溯
     */
    Map<String, Object> getProductTraceByName(String productName);

    /**
     * 获取批次追溯数据
     */
    Map<String, Object> getBatchTrace(Integer batchId);

    /**
     * 根据批次号获取批次追溯数据
     */
    Map<String, Object> getBatchTraceByNo(String batchNo);

    /**
     * 获取缺陷追溯数据
     */
    Map<String, Object> getDefectTrace(Integer defectId);

    /**
     * 根据缺陷名称获取缺陷追溯数据
     */
    Map<String, Object> getDefectTraceByName(String defectName);

    /**
     * 获取所有缺陷名称列表，用于下拉框选择
     */
    List<Map<String, Object>> getDefectNameList();
}